「Hello, world 」プログラムとは、通常、「Hello, world」に似たメッセージを出力するシンプルなコンピュータプログラムです。テキストは印刷したり、画面(多くの場合コンソール)に表示したりできます。ほとんどの汎用プログラミング言語では、このプログラムは言語の基本的な構文を示すために使われる小さなコードです。このようなプログラムは、新しいプログラミング言語を学ぶ学生が最初に書くプログラムであることが多いですが、[ 1 ]ソースコードをコンパイルまたは実行するためのコンピュータソフトウェアが正しくインストールされていること、および操作者がその使い方を理解していることを確認するための健全性チェックとしても使用できます。

プログラム可能なコンピュータの開発以来、いくつかの小さなテストプログラムが存在してきたが、「Hello, world」というフレーズをテストメッセージとして使用する伝統は、1978年の書籍『The C Programming Language』[ 2 ]に掲載されたサンプルプログラムの影響を受けており、BCPLではそれ以前に使用されていた可能性が高い。同書のサンプルプログラムは、"こんにちは世界"、そしてブライアン・カーニハンによる1974年のベル研究所の内部メモランダムから受け継がれたもので、Programming in C: A Tutorial : [ 3 ]
main ( ) { printf ( "hello, world" ); }上記の例では、主要( )関数は、プログラムの実行開始位置を定義します。関数本体は、単一のステートメントと、printf()これは「 print formatted」の略で、引数として渡された文字列をコンソールに出力します。"こんにちは世界"。
C言語版に先立って、カーニハン自身が1972年に『A Tutorial Introduction to the Language B』[ 4 ]を出版しており、その中で外部変数を説明するために使用された例の中に、このプログラムの最初の既知のバージョンが見られます。
主要( ) { 外部 a、b、c; putchar(a); putchar(b); putchar(c); putchar('!*n'); } 「地獄」 弓'; c '世界'; 上記のプログラムは以下を印刷しますこんにちは世界!端末には、改行文字を含めて表示されます。このフレーズは複数の変数に分割されています。これは、 Bでは文字定数が 4 つのASCII文字に制限されているためです。チュートリアルの前の例では、こんにちは!端末上で、そしてフレーズこんにちは世界!これは、表現するためにいくつかの文字定数を必要とする、やや長めの挨拶として導入された。
Jargon Fileによると、「hello, world!」は1967年にBCPLという言語で生まれたとのことです。[ 5 ]コンピューター以外の分野では、このフレーズの使用は10年以上前から始まっており、1950年代からニューヨークのラジオDJ、ウィリアム・B・ウィリアムズの決め台詞でした。 [ 6 ]

「Hello, world」プログラムは、言語によって複雑さが異なります。一部の言語、特にスクリプト言語では、「Hello, world」プログラムは1つのステートメントで記述できますが、他の言語(特に多くの低レベル言語)では、より多くのステートメントが必要になる場合があります。たとえば、Pythonでは、文字列を出力するには、こんにちは世界の後に改行が続く場合は、と書くだけで済みます。対照的に、C++ [ 7 ]の同等のコードでは、 C++ 標準ライブラリのインポート、エントリ ポイント(main 関数)の宣言、およびテキストの行を標準出力ストリームに出力する呼び出しが必要です。print("Hello, world")

「Hello, world」というフレーズは、大文字小文字や句読点(コンマや感嘆符の有無など)にさまざまなバリエーションが見られます。一部のデバイスでは、大文字のみをサポートするシステムではすべて大文字のバージョンなど、特定のバリエーションにフォーマットが制限されています。また、一部の難解なプログラミング言語では、わずかに変更された文字列を出力する必要がある場合があります。出力には他の人間の言語が使用されています。たとえば、Go 言語のチュートリアルでは、英語と中国語または日本語の文字の両方が出力され、言語に組み込まれたUnicodeサポートが実証されています。[ 8 ]もう 1 つの注目すべき例はRust 言語で、その管理システムは新しいプロジェクトを作成するときに「Hello, World」プログラムを自動的に挿入します。

一部のプログラミング言語は、簡単な例を示すという趣旨は維持しつつ、「Hello, world」プログラムの機能を変更しています。Lisp 、ML、Haskellなどの関数型プログラミング言語は、「Hello, world」の代わりに階乗プログラムを使用する傾向があります。これは、関数型プログラミングが再帰的手法を重視するのに対し、元の例では入出力が重視されており、副作用が生じるため、純粋な関数型プログラミングの趣旨に反するからです。「Hello, world」を出力できる言語(アセンブリ言語、C、VHDLなど)は、組み込みシステムでも使用できます。組み込みシステムでは、テキスト出力が困難(追加コンポーネントが必要、または別のコンピュータとの通信が必要)であるか、あるいはテキスト出力が存在しない場合があります。マイクロコントローラ、フィールドプログラマブルゲートアレイ、複合プログラマブルロジックデバイス(CPLD)などのデバイスでは、「Hello, world」の代わりに、コンポーネント間のタイミングと相互作用を示す点滅する発光ダイオード(LED)を使用する場合があります。[ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ]
DebianおよびUbuntu Linuxディストリビューションは、ソフトウェアパッケージマネージャシステムを通じて「Hello, world」プログラムを提供しており、以下のコマンドで起動できます。こんにちはこれは健全性チェックとして機能し、ソフトウェア パッケージのインストールの簡単な例となります。開発者にとっては、従来の方法または debhelper を使用して .deb パッケージを作成する例と、こんにちはGNU Hello は、 GNUプログラムの作成例として使用されています。[ 14 ]
グラフィック出力(テキスト出力とは対照的に)を生成する「Hello, world」プログラムのバリエーションも紹介されている。Sunはスケーラブルベクターグラフィックスに基づくJavaの「Hello, world」プログラムをデモンストレーションし[ 15 ]、XLプログラミング言語は3Dコンピュータグラフィックスを使用した回転する地球の「Hello, world」を特徴としている[ 16 ]。Mark GuzdialとElliot Solowayは、グラフィックとサウンドをテキストと同じくらい簡単に操作できるようになった現在では、「hello, world」テストメッセージは時代遅れかもしれないと示唆している[ 17 ] 。
コンピュータグラフィックスでは、三角形のレンダリング(「ハロートライアングル」)は、グラフィックスライブラリの入門例として使用されることがあります。[ 18 ] [ 19 ]
「Hello World 作成時間」(TTHW)とは、特定のプログラミング言語で「Hello, world」プログラムを作成するのにかかる時間のことです。これは、プログラミング言語の使いやすさを測る指標の一つです。このプログラムは、その言語に不慣れな人への入門として意図されているため、より複雑な「Hello, world」プログラムは、そのプログラミング言語が親しみにくいことを示している可能性があります。[ 20 ]例えば、Malbolgeで最初に公開された「Hello, world」プログラム(実際には「HEllO WORld」を出力)は、発表されるまでに 2 年かかり、人間ではなくCommon Lisp で書かれたコードジェネレータによって作成されました。
この概念はプログラミング言語だけでなくAPIにも拡張され、新しい開発者が基本的な例を動作させるのがどれだけ簡単かの尺度として用いられています。時間が短いほど、開発者にとってAPIを採用しやすいことを示しています。[ 21 ] [ 22 ]
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)次回は、グラフィックと、ゲームプログラマー以外誰も使わない有名な「ハロートライアングル」コードを扱えるようにコードを拡張します。